package com.yy.poly_.dynamic_;

/**
 * chapter08  com.yy.poly_.dynamic_
 * 2023-04-07 15:36
 *
 * @author yy yuyue
 * description : 不可描述
 * @date 2023/4/7 15:36
 */
public class DynamicBinding {
    public static void main(String[] args) {
        //a的编译类型是A, a的运行类型是B
            A a = new B();//向上转型
        System.out.println(a.sum());// 40 -> 30 ->
        System.out.println(a.sum1()); //30 -> 20
    }
}
class A{  //父类

    //动态绑定机制
    public int i = 10;

    //动态绑定机制
    public int sum(){ //父类sum()
        return getI() + 10; // 20 + 10 = 30
    }

    public int sum1(){ //父类sum1()
        return  i + 10;//10 + 10
    }
    public int getI(){ //父类getI
        return i;
    }

}
class B extends A{
    public int i = 20;

    //动态绑定机制
//    public int sum() { //父类sum()
//        return getI() + 20; // 如果注释掉了这个函数,结果就是
//
//    }

    public int getI(){ //父类getI
        return i;
    }
//    public int sum1(){ //父类sum1()
//        return  i + 10;//10 + 10    如果注释掉了这个函数,结果就是
//    }


}
